home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / DB_CLIPP / 2510.ZIP / TRSOURCE.EXE / SAVESCR.C < prev    next >
C/C++ Source or Header  |  1990-10-22  |  2KB  |  75 lines

  1. /*********
  2. *  savescr.c by Leonard Zerman
  3. * Placed in the public domain by Tom Rettig Associates, 10/22/1990.
  4. *
  5. *  Syntax: SAVESCR( <expC>[, <expC>[,<expC>]])
  6. *  Return: <expL> .T.if saves else .F. 
  7. ********/
  8.  
  9. #include "trlib.h"
  10.  
  11. TRTYPE savescr() 
  12. {
  13.    static char fnamebuff[66];
  14.    static char extention[] = ".SCN";
  15.    char * fname;
  16.    char * memvarptr;
  17.    char * coloropt;
  18.    char * scrptr;
  19.    int len, memvarlen;
  20.    int fhandle;
  21.    int i;
  22.  
  23.    if (PCOUNT == 1 && ISCHAR(1) ||
  24.       (PCOUNT == 2 && ISCHAR(1) && ISCHAR(2)) ||
  25.       (PCOUNT == 3 && ISCHAR(1) && ISCHAR(2) && ISCHAR(3)))
  26.    {
  27.        fname = _parc(1);
  28.        memvarlen = 0;
  29.  
  30.        if (PCOUNT > 1)
  31.        {
  32.           memvarptr = _parc(2);
  33.           memvarlen = _parclen(2);
  34.        }
  35.        if (PCOUNT == 3)
  36.           coloropt = _parc(3);
  37.  
  38.        len = _tr_strlen(fname);
  39.        _tr_strcpy(fnamebuff,fname);
  40.        for(i = 0;i < len && fnamebuff[i] != '.'; i++)
  41.           ;
  42.        if (i == len)
  43.           _tr_strcat(fnamebuff,extention);
  44.  
  45.        fhandle = _tr_creat(fnamebuff,0);
  46.        if (fhandle == ERRORNEG)
  47.        {
  48.           _retl(FALSE);
  49.           return;
  50.        }
  51.  
  52.        if (_tr_iscolor())
  53.           scrptr = MK_FP(COLOR_VID_AD,0);
  54.        else
  55.           scrptr = MK_FP(MONO_VID_AD,0);
  56.  
  57.        if (PCOUNT == 3)
  58.        {
  59.           if(toupper(*coloropt) == 'G')
  60.           {
  61.              scrptr = MK_FP(COLOR_VID_AD,0);
  62.           }
  63.        }
  64.        if (PCOUNT > 1 && memvarlen)
  65.           scrptr = memvarptr;
  66.  
  67.        _tr_write(fhandle,scrptr,4000);
  68.        _tr_close(fhandle);
  69.        _retl(TRUE);
  70.    }
  71.    else
  72.       _retl(FALSE);
  73. }
  74. /*********************** eof savescr ***************************************/
  75.